home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / ABUSESRC.ZIP / AbuseSrc / imlib / port / dos4gw / ipx.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-23  |  2.5 KB  |  94 lines

  1. #ifndef __IPX_HHP__
  2. #define __IPX_HHP__
  3.  
  4. #include "jnet.hpp"
  5. #define MAX_PACKETS 10
  6.  
  7. #pragma pack (1)
  8.  
  9. struct ECBStructure
  10. {
  11.   ushort Link[2];                /* offset-segment */
  12.   ushort ESRAddress[2];          /* offset-segment */
  13.   uchar  InUseFlag;
  14.   uchar  CompletionCode;
  15.   ushort ECBSocket;              /* high-low */
  16.   uchar  IPXWorkspace[4];        /* N/A */
  17.   uchar  DriverWorkspace[12];    /* N/A */
  18.   uchar  ImmediateAddress[6];    /* high-low */
  19.   ushort FragmentCount;          /* low-high */
  20.   ushort fAddress[2];            /* offset-segment */
  21.   ushort fSize;                  /* low-high */
  22. } ;
  23.  
  24. struct IPXPacketStructure
  25. {
  26.   ushort PacketCheckSum;         /* high-low */
  27.   ushort PacketLength;           /* high-low */
  28.   uchar  PacketTransportControl;
  29.   uchar  PacketType;
  30.  
  31.   uchar  dNetwork[4];            /* high-low */
  32.   uchar  dNode[6];               /* high-low */
  33.   ushort dSocket;                /* high-low */
  34.  
  35.   uchar  sNetwork[4];            /* high-low */
  36.   uchar  sNode[6];               /* high-low */
  37.   ushort sSocket;                /* high-low */
  38. };
  39.  
  40.  
  41. struct JC_ipx_packet
  42. {
  43.   ECBStructure ecb;
  44.   IPXPacketStructure ipx;
  45.   ulong time_stamp;
  46.   ushort verify_stamp;       // should be 0cdc  "crack dot com", all others ignored
  47.   uchar buffer[512];
  48. } ;
  49.  
  50.  
  51. class ipx_out_socket : public out_socket
  52. {
  53.   public :
  54.  
  55.   int local_socket,      // fetched dymnamically from IPX driver
  56.       remote_socket;     // fetched from remote host through connection port
  57.   ulong local_time,
  58.         remote_time;
  59.   JC_ipx_packet *pk;                        // list of ecb's
  60.   ipx_out_socket(int port);                 // port==0 means allocate dynamically
  61.                                             // allocates 1 sending ecb, and 5 recieving
  62.  
  63.   int try_connect(char *rhost, int port);  // sends connection request to port and
  64.                                             // waits for a acceptance reply, 2 second time out
  65.   virtual int ready_to_read();              // true if at any "recieve" packets are clear
  66.   virtual int ready_to_write();             // true if send packet is clear
  67.   virtual int send(packet &pk);
  68.   virtual int get(packet &pk);              
  69.   virtual ~ipx_out_socket();
  70. } ;
  71.  
  72.  
  73. class ipx_in_socket : public in_socket
  74. {
  75.   int port;
  76.   public :
  77.   ipx_in_socket(int Port);
  78.   ipx_out_socket *listener;
  79.   virtual out_socket *check_for_connect();
  80.   virtual ~ipx_in_socket();
  81. } ;
  82.  
  83. int ipx_init();
  84. void ipx_uninit();
  85. uchar *ipx_get_local_address();
  86.  
  87. #endif
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.